NetBeans Matisse
Matisse is the name of the 'free form' editor in the
NetBeans IDE.
Matisse allows to quickly create complex layouts which
automatically take the preferred spacings of the current look and feel into
account.
Behind the scenes, Matisse uses javax.swing.GroupLayout and javax.swing.LayoutStyle.
Known Issues with Matisse and the Quaqua Look and
Feel
- Matisse removes borders and margins from JRadioButtons and JCheckBoxes. (see
NetBeans Issue #74522).
This breaks the alignment of
the Quaqua component UI's and causes parts of the button artwork being
cut off.
- Matisse only supports
RELATED and PARENT component spacings, all
other spacings (UNRELATED and INDENT) are explicitly specified in pixels.
Layouts that contain spacings based on pixel values, which will only look correct
for
the
look
and
feel
the
layout was created with. Most importantly, a layout created for Apple's Aqua
Look
and
Feel
will look different when run with the Quaqua Look and Feel.
- Matisse organizes the GroupLayout into horizontal and vertical
groups, without taking the logical
structure of the components
into
account.
This may cause irregular spacings between components.
How to create layouts for the Quaqua Look and Feel using Matisse
- After adding a JRadioButton or a JCheckBox a
the form, change its border and its margins to the default value.
Alternatively, set the System property Quaqua.enforceVisualMargin=true before
creating a QuaquaLookAndFeel object.
- After you have laid out all components on the form,
take a look at the generated code in method initComponents. If the code contains
absolute gap values in Pixels, change the layout until all values are based
on logical values. If your layout contains indentations, create a copy
of
method
initComponents,
and code the indentations manually (see GroupLayout on how to do this).
Put the original initComponents method into
/* */ comments.
- After you have laid out all components on the form,
take a look at the generated code in method initComponents. If the GroupLayout
groups do not match the logical structure of the components, create a copy
of
method
initComponents,
and rearrange the groups manually. Put the original initComponents method
into
/* */ comments.